/*
题目：汉明距离总和
两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。

给你一个整数数组 nums，请你计算并返回 nums 中任意两个数之间 汉明距离的总和 。
 */
public class TotalHammingDistance {
    public int totalHammingDistance(int[] nums) {
        int ans = 0;
        for (int i = 0; i < 32; i++) {  //遍历每一个比特位
            int cnt = 0;
            for (int val : nums) {
                cnt += ((val >>> i) & 1);  //记录所有元素在第i比特位上1的个数
            }
            ans += (cnt) * (nums.length - cnt); //一个比特位上1的个数*0的个数就是汉明距离
        }
        return ans;
    }
}
